#ifndef ARRAY_H
#define ARRAY_H
#include "main.h"

#define BLOCK_SIZE 10

/**
 * @brief 可变数组结构体
 */
typedef struct{
    int* array;
    int size;
}Array;

/**
 * @brief 可变数组创建函数
 * @param int_size 数组初始长度
 * @return 可变数组的头指针
 */
Array arr_create(int init_size);

/**
 * @brief 释放数组
 */
void arr_free(Array *arr);

/**
 * @return 数组大小
 */
int arr_size(const Array *arr);

/**
 * @brief 索引数组元素
 */
int* arr_at(Array *arr, int index);

/**
 * @brief 获取数组元素
 * @param arr 数组指针
 * @param index 索引
 */
int arr_get(const Array *arr, int index);

/**
 * @brief 设置数组元素
 * @param arr 数组指针
 * @param index 索引
 * @param value 设置的值
 */
void arr_set(Array *arr, int index, int value);

/**
 * @brief 扩展数组 
 */
void arr_inflate(Array *arr, int more_size);

void arr_display(const Array *arr);


#endif